/*
 * Programa que calula las notas medias de los alumnos
 * y muestra los que están aptos y los que no.
 * 
 */
package alumnos;

import java.util.Scanner;

/**
 *
 * @author Cristian Muñiz Álvarez
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String nom; //introduce el nombre
        String ape; //introduce el apellido
        String dn; //introduce el DNI
        String[][] suspensos = new String[50][4]; //recoge los alumnos suspensos
        String[][] aprobados = new String[50][4]; //regoge los alumnos aprobados
        int x = 0; //contador suspensos
        int y = 0; //contador aprobados
        int menu; //selección en el menú de abajo
        int cont = 0;

        Scanner teclado1 = new Scanner(System.in);
        teclado1.useDelimiter("\n");

        boolean e = true;

        System.out.println("PROGRAMA PARA CALCULAR LAS NOTAS MEDIAS DE LOS ALUMNOS\n");

        while (e) {
            System.out.print("Nombre del alumno: ");
            nom = teclado1.next();
            System.out.print("Apellidos del alumno: ");
            ape = teclado1.next();
            System.out.print("DNI del alumno: ");
            dn = teclado1.next();

            Alumno nuevoAlumno = new Alumno(nom, ape, dn);

            float ad = nuevoAlumno.notaMedia();
            String media = "" + ad; //convierte el float en un String para guardarlo en el arreglo

            if (nuevoAlumno.suspenso()) {
                suspensos[x][0] = nuevoAlumno.getDni();
                suspensos[x][1] = nuevoAlumno.getApellidos();
                suspensos[x][2] = nuevoAlumno.getNombre();
                suspensos[x][3] = media;
                x++;
            } else {
                aprobados[y][0] = nuevoAlumno.getDni();
                aprobados[y][1] = nuevoAlumno.getApellidos();
                aprobados[y][2] = nuevoAlumno.getNombre();
                aprobados[y][3] = media;
                y++;
            }

            cont++;
            if (cont == 50) {
                break;
            }

            char fin2;
            System.out.println("¿Desea introducir otro alumno? s/n");
            fin2 = teclado1.next().charAt(0);
            if (fin2 != 's') {
                break;
            }

        }

        boolean m = true;
        int r = 0; //contador de errores
        while (m) {

            System.out.println("\nMENÚ");
            System.out.println("1.- Ver los alumnos aprobados.");
            System.out.println("2.- Ver los alumnos suspensos.");
            System.out.println("3.- Ver las notas medias de todos los alumnos");
            System.out.println("4.- Salir del programa.\n");

            menu = teclado1.nextInt();

            switch (menu) {
                case 1:
                    if (y == 0) {
                        System.out.println("No hay ningún aprobado\n");
                    } else {
                        System.out.println("Alumnos aprobados: \n");
                    }
                    for (int z = 0; z < y; z++) {
                        System.out.println("DNI: " + aprobados[z][0] + ".... Alumno: "
                                + aprobados[z][1] + ", " + aprobados[z][2]);
                        System.out.println("Nota media:..... " + aprobados[z][3] + "\n");
                    }
                    break;

                case 2:
                    if (x == 0) {
                        System.out.println("No hay ningún suspenso\n");
                    } else {
                        System.out.println("Alumnos suspensos: \n");
                    }
                    for (int z = 0; z < x; z++) {
                        System.out.println("DNI: " + suspensos[z][0] + ".... Alumno: "
                                + suspensos[z][1] + ", " + suspensos[z][2]);
                        System.out.println("Nota media:..... " + suspensos[z][3] + "\n");
                    }
                    break;
                case 3:
                    System.out.println("Notas de los alumnos:\n");
                    for (int z = 0; z < y; z++) {
                        System.out.println("DNI: " + aprobados[z][0] + ".... Alumno: "
                                + aprobados[z][1] + ", " + aprobados[z][2]);
                        System.out.println("Nota media:..... " + aprobados[z][3]);
                    }
                    for (int z = 0; z < x; z++) {
                        System.out.println("DNI: " + suspensos[z][0] + ".... Alumno: "
                                + suspensos[z][1] + ", " + suspensos[z][2]);
                        System.out.println("Nota media:..... " + suspensos[z][3] + "\n");
                    }

                    break;
                case 4:
                    m = false;
                    break;
                default:
                    System.out.println("Valor no valido\n");
                    r++;
                    if (r == 2) {
                        System.out.println("Demasiados errores");
                        System.out.println("El programa se cerrará\n");
                        m = false;
                    }
                    break;
            }
        }

    }

}
